package com.example.mapping.enumeration;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Objects;

/**
 * 访问者类型枚举
 *
 * @author baoyoujia
 * @date 2022/10/20
 */
@AllArgsConstructor
@Getter
public enum VisitorTypeEnum {

    /**
     * 替换所有同名字段
     */
    TRAVERSE(1, "替换所有同名字段"),
    /**
     * 替换指定字段
     */
    MAPPING_ABSOLUTE(2, "替换指定字段")
    ;

    private final Integer type;

    private final String desc;

    /**
     * 根据类型获取枚举
     * @param type 类型
     * @return 枚举
     */
    public static VisitorTypeEnum getEnum(Integer type) {
        return Arrays.stream(VisitorTypeEnum.values()).filter(x -> Objects.equals(x.getType(), type)).findFirst().orElse(VisitorTypeEnum.MAPPING_ABSOLUTE);
    }
}
